草庐IT

序列化器 Serializer

全部标签

c# - 如何强制 Newtonsoft Json 序列化所有属性? (具有 "Specified"属性的奇怪行为)

各位程序员,我在Newtonsoft.Json中遇到了一个奇怪的行为。当我尝试序列化一个如下所示的对象时:publicclassDMSDocWorkflowI{[JsonProperty("DMSDocWorkflowIResult")]publicboolDMSDocWorkflowIResult{get;set;}[JsonProperty("DMSDocWorkflowIResultSpecified")]publicboolDMSDocWorkflowIResultSpecified{get;set;}}使用这个没有自定义转换器/绑定(bind)器/契约解析器的简单调用:var

c# - 如何在 C# MVC Controller 操作中将动态对象序列化为 JSON?

我想将动态对象序列化为JSON。我尝试使用ExpandoObject,但结果不是我需要的:publicJsonResultEdit(){dynamico=newExpandoObject();((IDictionary)o)["abc"]="ABC";//oro.abc="ABC";returnJson(o);}我希望JSON看起来像:{"abc":"ABC"}但它看起来像[{"Key":"abc","Value":"ABC"}]显然ExpandoObject不行,但是我可以继承DynamicObject并以某种方式覆盖它的方法来实现我想要的JSON格式吗?

c# - WCF 反序列化中的 XmlException : "Name cannot begin with ' <'" - in automatic property backing fields

我今天开始在WCF反序列化中遇到错误-代码一直没有改变并且工作了几个月。问题是我正在获取运行时XmlException说“名称不能以‘k_BackingField,这是XmlException的来源。我在网上看到了其他一些引用资料,其中人们接受的解决方案是“我更改了我的代码以不使用自动属性”,这对我来说是不能接受的,因为我需要更改100个对象,(其中有1000个属性)。此外,当我上周运行这段相同的代码时,它运行良好,似乎并没有影响所有序列化的DTO,只有一些。更令人沮丧的是,它似乎有点断断续续。今天早上偶尔会抛出异常...!问题;为什么在未更改的代码和未更改的框架源中突然出现此问题?如

c# - 将 JSON 反序列化为多个属性

我正在针对返回JSON数据的第三方API进行编程,但格式可能有点奇怪。某些属性可以是一个对象(包含一个Id属性),也可以是一个字符串(它是对象的ID)。例如,以下两个都是有效的:{ChildObject:'childobjectkey1'}和{ChildObject:{Id:'childobjectkey1',//(otherproperties)}}我正在尝试使用JSON.net将其反序列化为强类型类,但到目前为止运气不佳。我最好的想法是将它序列化为两个属性,一个是字符串,另一个是对象,并为每个属性使用自定义JsonConverter以允许可变行为:publicabstractcla

c# - 如何从 [Serializable] INotifyPropertyChanged 实现者中排除不可序列化的观察者?

我有将近一百个这样的实体类:[Serializable]publicclassSampleEntity:INotifyPropertyChanged{privatestringname;publicstringName{get{returnthis.name;}set{this.name=value;FirePropertyChanged("Name");}}[field:NonSerialized]publiceventPropertyChangedEventHandlerPropertyChanged;privatevoidFirePropertyChanged(stringpro

c# - 使用 XmlSerializer 反序列化 List<int> 导致额外的项目

我注意到XmlSerializer和通用列表(特别是List)有一个奇怪的行为。我想知道是否有人以前见过这个或知道发生了什么。看起来序列化工作正常,但反序列化想要向列表中添加额外的项目。下面的代码演示了这个问题。可序列化类:publicclassListTest{publicint[]Array{get;set;}publicListList{get;set;}publicListTest(){Array=new[]{1,2,3,4};List=newList(Array);}}测试代码:ListTestlistTest=newListTest();Debug.WriteLine("I

c# - 包含循环,如果引用跟踪被禁用,则无法序列化,json.net 和 webapi

我收到错误:Objectgraphfortype'System.Collections.Generic.List`1[[Proj.Model.Prom,Proj.Model,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]]'containscyclesandcannotbeserializedifreferencetrackingisdisabled.阅读有关内容,似乎是序列化程序,但Json.Net声称是解决方案,我已经阅读了WebApi和Framework4.5默认情况下具有它。那么它是默认出现的吗?如果是这样,为什么我仍然

c# - 使用自动修剪字符串反序列化 json

我使用Newtonsoft.Json库有没有办法在反序列化期间从任何字符串数据中修剪空格?classProgram{classPerson{[JsonProperty("name")]publicstringName;}staticvoidMain(string[]args){varp=JsonConvert.DeserializeObject(@"{name:""John""}");Console.WriteLine("Nameis:\"{0}\"",p.Name);}}添加:最后,我得到了自定义转换器的解决方案。不好,但比使用Trim()的属性更好。如果有人有任何想法如何以更自然的

c# - 不使用 XmlInclude 进行序列化

我正在使用.NET序列化反序列化名为Method的类。Method包含实现IAction的对象列表。我最初使用[XmlInclude]属性指定实现IAction的所有类。但是现在,我想更改我的程序以加载目录中的所有dll,并删除实现IAction的类。然后用户可以反序列化包含他们实现IAction的操作的文件。我不再控制实现IAction的类,因此我不能使用[XmlInclude].有没有办法在运行时设置这个属性?或者为实现类设置了类似的属性?publicclassMethod{publicListActions=newList();}publicinterfaceIAction{vo

c# - 如何序列化未设计为序列化的类?

我需要将一些类和数据结构保存到一个文件中。我的第一react是使用XML或二进制序列化,但这正在变成一场噩梦。我有一组不打算序列化的类(私有(private)setter、没有无参数构造函数、没有序列化属性、字典等)。考虑到我不能改变那些类(class),我该怎么办?是否有任何解决方法并仍然使用序列化?我是否必须编写所有代码来编写属性、集合等? 最佳答案 使用JavaScriptSerializer。它位于System.Web.Script.Serialization命名空间中,并在System.Web.Extensions.dll